home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / comm / comm2 / hdrbbs11.lh0 / HBBS / Source / Control / ControlGUI / ControlGUI.c_ next >
Text File  |  1996-06-25  |  28KB  |  685 lines

  1. /*********************************************/
  2. /*                                           */
  3. /*       Designer (C) Ian OConnor 1994       */
  4. /*                                           */
  5. /*      Designer Produced C include file     */
  6. /*                                           */
  7. /*********************************************/
  8.  
  9. #include "ControlGUI.h"
  10.  
  11.  
  12. UWORD HbbsLogo_brushColours[] =  /* Use LoadRGB4 to use this. */
  13.         {
  14.         2730,0,4095,1675,2457,3003,2985,4026
  15.         };
  16.  
  17. UWORD HbbsLogo_brushData[375] =
  18.         {
  19.         0,0,0,0,0,0,0,0,0,0,256,4096,0,0,0,256,4127,49409,64528,8129,256,4112,257,16,
  20.         4097,256,4112,257,16,4127,256,4112,257,16,4096,0,4096,768,48,0,0,4096,512,32,0,
  21.         508,4127,49153,64515,65281,256,4112,257,16,1,256,4112,257,16,1,256,4112,257,16,
  22.         16385,256,4096,256,16,1,256,4096,768,48,3,32513,63487,65151,65507,65534,0,0,0,
  23.         0,0,0,0,0,0,0,0,8704,32768,47488,32768,0,8704,32770,8744,32768,0,658,45218,
  24.         8200,32768,0,14868,42276,8584,32768,0,8804,41252,8232,32768,0,8768,41000,8232,
  25.         32768,0,8835,41192,8648,32768,0,0,0,0,0,65027,61439,64767,65479,65532,65027,
  26.         61439,65279,65519,65534,65027,61408,16126,1007,57406,65027,61408,16126,1007,
  27.         57406,65027,61408,16126,1007,57344,65027,61408,16126,1007,57344,65535,61439,
  28.         64767,65487,65532,65535,61439,64767,65479,65534,65027,61408,16126,992,254,
  29.         65027,61408,16126,992,254,65027,61408,16126,1007,33022,65027,61408,16126,1007,
  30.         33022,65027,61439,65279,65519,65534,65027,61439,64767,65479,65532,0,0,0,0,0,0,
  31.         0,0,0,0,0,17409,1,62353,0,0,17409,4,17497,0,0,17703,29124,17429,0,0,32041,
  32.         19016,17299,0,0,17609,16968,16465,0,0,17545,16976,17489,0,0,17671,16848,17297,
  33.         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  34.         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  35.         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  36.         0,0,0,0,0,0,0,0,0,0,0,0,0,0
  37.         };
  38.  
  39. struct Menu *CtrlMenu = NULL;
  40.  
  41. struct NewMenu CtrlMenuNewMenu[] =
  42.         {
  43.         NM_TITLE, (STRPTR)"HBBS"        ,  NULL , 0, NULL, (APTR)~0,
  44.         NM_ITEM , (STRPTR)"About"       , (STRPTR)"?", 0, 0L, (APTR)~0,
  45.         NM_ITEM , (STRPTR)"Screen Mode" , (STRPTR)"M", 0, 0L, (APTR)~0,
  46.         NM_ITEM , NM_BARLABEL           ,  0 , 0, 0L, (APTR)~0,
  47.         NM_ITEM , (STRPTR)"Quit!"       , (STRPTR)"Q", 0, 0L, (APTR)~0,
  48.         NM_END  , NULL                  ,  NULL , 0, 0L, (APTR)~0
  49.         };
  50.  
  51. ULONG CtrlMenuTags[] =
  52.         {
  53.         (GT_TagBase+67), TRUE,
  54.         (GTMN_TextAttr), (ULONG)&HBBS8066,
  55.         (TAG_DONE)
  56.         };
  57.  
  58. ULONG BevelTags[] =
  59.         {
  60.         (GTBB_Recessed), TRUE,
  61.         (GT_VisualInfo), 0,
  62.         (TAG_DONE)
  63.         };
  64.  
  65. struct Window *Ctrl = NULL;
  66. APTR CtrlVisualInfo;
  67. APTR CtrlDrawInfo;
  68. struct Gadget *CtrlGList;
  69. struct Gadget *CtrlGadgets[25];
  70. UBYTE CtrlFirstRun = 0;
  71.  
  72. STRPTR Ctrl_LV1_CycleLabels[] =
  73. {
  74.         (STRPTR)"Last Callers",
  75.         (STRPTR)"Last Downloads",
  76.         (STRPTR)"Last Uploads",
  77.         (STRPTR)"Last Pagers",
  78.         (STRPTR)"Last PWFails",
  79.         (STRPTR)"Last Carrier",
  80.         NULL
  81. };
  82.  
  83. ULONG CtrlGadgetTags[] =
  84.         {
  85.         (GTLV_Selected), 0,
  86.         (TAG_END),
  87.         (GTCY_Labels), (ULONG)&Ctrl_LV1_CycleLabels[0],
  88.         (TAG_END),
  89.         (GTLV_Selected), 0,
  90.         (TAG_END),
  91.         (GTLV_Selected), 0,
  92.         (TAG_END),
  93.         (GTLV_Selected), 0,
  94.         (TAG_END),
  95.         (GA_Disabled), TRUE,
  96.         (TAG_END),
  97.         (GA_Disabled), TRUE,
  98.         (TAG_END),
  99.         (GA_Disabled), TRUE,
  100.         (TAG_END),
  101.         (GA_Disabled), TRUE,
  102.         (TAG_END),
  103.         (GA_Disabled), TRUE,
  104.         (TAG_END),
  105.         (GA_Disabled), TRUE,
  106.         (TAG_END),
  107.         (GA_Disabled), TRUE,
  108.         (TAG_END),
  109.         (GA_Disabled), TRUE,
  110.         (TAG_END),
  111.         (GA_Disabled), TRUE,
  112.         (TAG_END),
  113.         (GA_Disabled), TRUE,
  114.         (TAG_END),
  115.         (GTTX_Text), (ULONG)"             HydraBBS - (C) 1995-6 Dominic Clifton",
  116.         (TAG_END),
  117.         };
  118.  
  119. UWORD CtrlGadgetTypes[] =
  120.         {
  121.         LISTVIEW_KIND,
  122.         CYCLE_KIND,
  123.         BUTTON_KIND,
  124.         LISTVIEW_KIND,
  125.         BUTTON_KIND,
  126.         BUTTON_KIND,
  127.         BUTTON_KIND,
  128.         BUTTON_KIND,
  129.         BUTTON_KIND,
  130.         BUTTON_KIND,
  131.         LISTVIEW_KIND,
  132.         BUTTON_KIND,
  133.         BUTTON_KIND,
  134.         LISTVIEW_KIND,
  135.         BUTTON_KIND,
  136.         BUTTON_KIND,
  137.         BUTTON_KIND,
  138.         BUTTON_KIND,
  139.         BUTTON_KIND,
  140.         BUTTON_KIND,
  141.         BUTTON_KIND,
  142.         BUTTON_KIND,
  143.         BUTTON_KIND,
  144.         BUTTON_KIND,
  145.         TEXT_KIND,
  146.         };
  147.  
  148. struct NewGadget CtrlNewGad[] =
  149.         {
  150.         93, 30, 144, 60, NULL, &HBBS8066, Ctrl_LV1, 1, NULL,  (APTR)&CtrlGadgetTags[0],
  151.         93, 14, 144, 15, NULL, &HBBS8066, Ctrl_LV1_Cycle, 1, NULL,  (APTR)&CtrlGadgetTags[3],
  152.         93, 1, 144, 12, (UBYTE *)"Information", &HBBS8066, Ctrl_LV1_Info, 16, NULL,  NULL,
  153.         1, 14, 90, 77, NULL, &HBBS8066, Ctrl_LV2_Nodes, 4, NULL,  (APTR)&CtrlGadgetTags[6],
  154.         205, 91, 67, 13, (UBYTE *)"Window", &HBBS8066, Ctrl_Window, 16, NULL,  NULL,
  155.         137, 91, 67, 13, (UBYTE *)"Watch", &HBBS8066, Ctrl_Screen, 16, NULL,  NULL,
  156.         69, 91, 67, 13, (UBYTE *)"Stop", &HBBS8066, Ctrl_Stop, 16, NULL,  NULL,
  157.         1, 91, 67, 13, (UBYTE *)"Start", &HBBS8066, Ctrl_Start, 16, NULL,  NULL,
  158.         346, 1, 105, 12, (UBYTE *)"Configure", &HBBS8066, Ctrl_Configure, 16, NULL,  NULL,
  159.         239, 1, 105, 12, (UBYTE *)"Shutdown All", &HBBS8066, Ctrl_Shutdown, 16, NULL,  NULL,
  160.         452, 1, 179, 132, NULL, &HBBS8066, Ctrl_LV3_Commands, 1, NULL,  (APTR)&CtrlGadgetTags[9],
  161.         273, 91, 67, 13, (UBYTE *)"Config", &HBBS8066, Ctrl_Config, 16, NULL,  NULL,
  162.         1, 1, 91, 12, (UBYTE *)"Status", &HBBS8066, Ctrl_Status, 16, NULL,  NULL,
  163.         239, 14, 212, 76, NULL, &HBBS8066, Ctrl_Who, 1, NULL,  (APTR)&CtrlGadgetTags[12],
  164.         273, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_5, 16, NULL,  (APTR)&CtrlGadgetTags[15],
  165.         205, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_4, 16, NULL,  (APTR)&CtrlGadgetTags[18],
  166.         137, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_3, 16, NULL,  (APTR)&CtrlGadgetTags[21],
  167.         69, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_2, 16, NULL,  (APTR)&CtrlGadgetTags[24],
  168.         1, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_1, 16, NULL,  (APTR)&CtrlGadgetTags[27],
  169.         1, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_6, 16, NULL,  (APTR)&CtrlGadgetTags[30],
  170.         69, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_7, 16, NULL,  (APTR)&CtrlGadgetTags[33],
  171.         137, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_8, 16, NULL,  (APTR)&CtrlGadgetTags[36],
  172.         205, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_9, 16, NULL,  (APTR)&CtrlGadgetTags[39],
  173.         273, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_10, 16, NULL,  (APTR)&CtrlGadgetTags[42],
  174.         69, 134, 560, 12, (UBYTE *)"Status:", &HBBS8066, Ctrl_StatusText, 1, NULL,  (APTR)&CtrlGadgetTags[45],
  175.         };
  176. UWORD CtrlZoomInfo[4] = { 0, 10, 196, 11 };
  177.  
  178. struct IntuiText CtrlCfgTexts[] =
  179.         {
  180.         2, 0, JAM2, 16, 3, &HBBS8066, (UBYTE *)"Screen Settings", &CtrlCfgTexts[1],
  181.         2, 0, JAM2, 16, 39, &HBBS8066, (UBYTE *)"Misc Settings", NULL
  182.         };
  183.  
  184. struct Window *CtrlCfg = NULL;
  185. APTR CtrlCfgVisualInfo;
  186. APTR CtrlCfgDrawInfo;
  187. struct Gadget *CtrlCfgGList;
  188. struct Gadget *CtrlCfgGadgets[3];
  189. UBYTE CtrlCfgFirstRun = 0;
  190.  
  191. UWORD CtrlCfgGadgetTypes[] =
  192.         {
  193.         BUTTON_KIND,
  194.         BUTTON_KIND,
  195.         BUTTON_KIND,
  196.         };
  197.  
  198. struct NewGadget CtrlCfgNewGad[] =
  199.         {
  200.         11, 13, 110, 13, (UBYTE *)"Pick Mode", &HBBS8066, CtrlCfg_ScreenMode, 16, NULL,  NULL,
  201.         124, 13, 110, 13, (UBYTE *)"Save", &HBBS8066, CtrlCfg_Save, 16, NULL,  NULL,
  202.         11, 50, 110, 13, (UBYTE *)"BBS Config", &HBBS8066, CtrlCfg_EditBBSConfig, 16, NULL,  NULL,
  203.         };
  204.  
  205. struct IntuiText LoadingTexts[] =
  206.         {
  207.         2, 0, JAM2, 12, 4, &HBBS8066, (UBYTE *)"HydraBBS V A9", &LoadingTexts[1],
  208.         2, 3, JAM1, 118, 15, &HBBS8066, (UBYTE *)"(C) 1996 Dominic Clifton", &LoadingTexts[2],
  209.         2, 1, JAM1, 137, 25, &HBBS8066, (UBYTE *)"Deluxe Software Ltd", &LoadingTexts[3],
  210.         2, 3, JAM2, 139, 38, &HBBS8066, (UBYTE *)" ALPHA VERSION 09 ", &LoadingTexts[4],
  211.         2, 3, JAM1, 17, 58, &HBBS8066, (UBYTE *)"This program is SHAREWARE, if you", &LoadingTexts[5],
  212.         2, 3, JAM1, 17, 67, &HBBS8066, (UBYTE *)"use it alot then please register it!", &LoadingTexts[6],
  213.         2, 3, JAM1, 17, 77, &HBBS8066, (UBYTE *)"For details see 'HBBS.Guide'", &LoadingTexts[7],
  214.         2, 3, JAM1, 17, 86, &HBBS8066, (UBYTE *)"More hard work has gone into this", &LoadingTexts[8],
  215.         2, 3, JAM1, 17, 95, &HBBS8066, (UBYTE *)"program than you can imagine, and", &LoadingTexts[9],
  216.         2, 3, JAM1, 17, 105, &HBBS8066, (UBYTE *)"it's only fair that I should get", &LoadingTexts[10],
  217.         2, 3, JAM1, 17, 114, &HBBS8066, (UBYTE *)"something back for it!", &LoadingTexts[11],
  218.         2, 3, JAM1, 45, 133, &HBBS8066, (UBYTE *)"SHAREWARE SHAREWARE SHAREWARE", NULL
  219.         };
  220.  
  221. struct Window *Loading = NULL;
  222. APTR LoadingVisualInfo;
  223. APTR LoadingDrawInfo;
  224. UBYTE LoadingFirstRun = 0;
  225.  
  226. UWORD    CtrlScrndefpens = {65535};
  227.  
  228. UWORD   CtrlScrnColors[] =
  229.     {
  230.     0,10,10,10,
  231.     1,0,0,0,
  232.     65535,0,0,0
  233.     };
  234.  
  235. ULONG  CtrlScrnError=0;
  236.  
  237. ULONG   CtrlScrnTags[] =
  238.     {
  239.     (SA_Title),(ULONG)"HBBS",
  240.     (SA_PubName),(ULONG)"CtrlScrn",
  241.     (SA_Depth)   ,2,
  242.     (SA_Left)    ,0,
  243.     (SA_Top)     ,0,
  244.     (SA_Width)   ,640,
  245.     (SA_Height)  ,256,
  246.     (SA_DisplayID),167936,
  247.     (SA_Overscan),1,
  248.     (SA_Font),(ULONG)&HBBS8066,
  249.     (SA_Behind),1,
  250.     (SA_Quiet),0,
  251.     (SA_ShowTitle),1,
  252.     (SA_AutoScroll),1,
  253.     (SA_FullPalette),1,
  254.     (SA_ErrorCode),(ULONG)(&CtrlScrnError),
  255.     (SA_Pens),(ULONG)&CtrlScrndefpens,
  256.     (SA_Colors),(ULONG)CtrlScrnColors,
  257.     (TAG_DONE)
  258.     };
  259.  
  260. struct Library *DiskfontBase = NULL;
  261. struct Library *GadToolsBase = NULL;
  262. struct GfxBase *GfxBase = NULL;
  263. struct IntuitionBase *IntuitionBase = NULL;
  264.  
  265. struct Image HbbsLogo_brush = { 0, 0, 80, 25, 3, NULL, 7, 0, NULL};
  266.  
  267. APTR WaitPointer = NULL;
  268. UWORD WaitPointerData[] =
  269.     {
  270.     0x0000,0x0000,0x0400,0x07c0,
  271.     0x0000,0x07c0,0x0100,0x0380,
  272.     0x0000,0x07e0,0x07c0,0x1ff8,
  273.     0x1ff0,0x3fec,0x3ff8,0x7fde,
  274.     0x3ff8,0x7fbe,0x7ffc,0xff7f,
  275.     0x7ffc,0xffff,0x7ffc,0xffff,
  276.     0x3ff8,0x7ffe,0x3ff8,0x7ffe,
  277.     0x1ff0,0x3ffc,0x07c0,0x1ff8,
  278.     0x0000,0x07e0,0x0000,0x0000
  279.     };
  280.  
  281. struct TextAttr HBBS8066 = { (STRPTR)"HBBS.font", 8, 0, 66 };
  282.  
  283. int MakeMenuCtrlMenu( APTR MenuVisualInfo )
  284. {
  285.         if (NULL == (CtrlMenu = CreateMenusA( CtrlMenuNewMenu, NULL)))
  286.                 return( 1L );
  287.         LayoutMenusA( CtrlMenu, MenuVisualInfo, (struct TagItem *)(&CtrlMenuTags[0]));
  288.         return( 0L );
  289. }
  290.  
  291. void RendWindowCtrl( struct Window *Win, void *vi )
  292. {
  293. UWORD offx = Win->BorderLeft;
  294. UWORD offy = Win->BorderTop;
  295. if (Win != NULL)
  296.         {
  297.         DrawImage( Win->RPort, &HbbsLogo_brush, 357+offx, 99+offy);
  298.         BevelTags[3] = (ULONG)vi;
  299.         DrawBevelBoxA( Win->RPort, 1+offx,134+offy,630,12, (struct TagItem *)(&BevelTags[2]));
  300.         DrawBevelBoxA( Win->RPort, 341+offx,91+offy,110,41, (struct TagItem *)(&BevelTags[2]));
  301.         DrawBevelBoxA( Win->RPort,341+4+offx,91+2+offy,110-8,41-4, (struct TagItem *)(&BevelTags[0]));
  302.         }
  303. }
  304.  
  305. int OpenCtrlWindow( struct Screen *Scr)
  306. {
  307. UWORD offx, offy;
  308. UWORD loop;
  309. struct NewGadget newgad;
  310. struct Gadget *Gad;
  311. struct Gadget *Gad2;
  312. APTR Cla;
  313. if (CtrlFirstRun == 0)
  314.         {
  315.         CtrlFirstRun = 1;
  316.         }
  317. if (Ctrl == NULL)
  318.         {
  319.         offx = Scr->WBorLeft;
  320.         offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  321.         if (NULL != ( CtrlVisualInfo = GetVisualInfoA( Scr, NULL)))
  322.                 {
  323.                 if (NULL != ( CtrlDrawInfo = GetScreenDrawInfo( Scr)))
  324.                         {
  325.                         CtrlGList = NULL;
  326.                         Gad = CreateContext( &CtrlGList);
  327.                         for ( loop=0 ; loop<25 ; loop++ )
  328.                                 if (CtrlGadgetTypes[loop] != 198)
  329.                                         {
  330.                                         CopyMem((char * )&CtrlNewGad[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
  331.                                         newgad.ng_VisualInfo = CtrlVisualInfo;
  332.                                         newgad.ng_LeftEdge += offx;
  333.                                         newgad.ng_TopEdge += offy;
  334.                                         CtrlGadgets[ loop ] = NULL;
  335.                                         CtrlGadgets[ newgad.ng_GadgetID - CtrlFirstID ] = Gad = CreateGadgetA( CtrlGadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
  336.                                         }
  337.                         for ( loop=0 ; loop<25 ; loop++ )
  338.                                 if (CtrlGadgetTypes[loop] == 198)
  339.                                         {
  340.                                         CtrlGadgets[ loop ] = NULL;
  341.                                         Cla = NULL;
  342.                                         if (Gad)
  343.                                                 CtrlGadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, CtrlNewGad[ loop ].ng_GadgetText, CtrlNewGad[ loop ].ng_UserData );
  344.                                         }
  345.                         if (Gad != NULL)
  346.                                 {
  347.                                 if (NULL != (Ctrl = OpenWindowTags( NULL, (WA_Left), 0,
  348.                                                                 (WA_Top), 11,
  349.                                                                 (WA_Width), 636+offx,
  350.                                                                 (WA_Height), 149+offy,
  351.                                                                 (WA_Title), "HBBS Control",
  352.                                                                 (WA_ScreenTitle), "(C) Deluxe Software Ltd. Written By Dominic Clifton (Hydra/LSD)",
  353.                                                                 (WA_MinWidth), 196,
  354.                                                                 (WA_MinHeight), 11,
  355.                                                                 (WA_MaxWidth), 640,
  356.                                                                 (WA_MaxHeight), 160,
  357.                                                                 (WA_DragBar), TRUE,
  358.                                                                 (WA_DepthGadget), TRUE,
  359.                                                                 (WA_CloseGadget), TRUE,
  360.                                                                 (WA_Activate), TRUE,
  361.                                                                 (WA_Dummy+0x30), TRUE,
  362.                                                                 (WA_SmartRefresh), TRUE,
  363.                                                                 (WA_AutoAdjust), TRUE,
  364.                                                                 (WA_Gadgets), CtrlGList,
  365.                                                                 (WA_Zoom), CtrlZoomInfo,
  366.                                                                 (WA_PubScreen) , (LONG)Scr,
  367.                                                                 (WA_IDCMP),6292348,
  368.                                                                 (TAG_END))))
  369.                                         {
  370.                                         RendWindowCtrl(Ctrl, CtrlVisualInfo );
  371.                                         GT_RefreshWindow( Ctrl, NULL);
  372.                                         RefreshGList( CtrlGList, Ctrl, NULL, ~0);
  373.                                         if (CtrlMenu == NULL)
  374.                                                 MakeMenuCtrlMenu( CtrlVisualInfo);
  375.                                         if (CtrlMenu != NULL)
  376.                                                 {
  377.                                                 SetMenuStrip( Ctrl, CtrlMenu);
  378.                                                 return( 0L );
  379.                                                 }
  380.                                         CloseWindow( Ctrl );
  381.                                         }
  382.                                 }
  383.                         FreeGadgets( CtrlGList);
  384.                         FreeScreenDrawInfo( Scr, CtrlDrawInfo );
  385.                         }
  386.                 FreeVisualInfo( CtrlVisualInfo );
  387.                 }
  388.         }
  389. else
  390.         {
  391.         WindowToFront(Ctrl);
  392.         ActivateWindow(Ctrl);
  393.         return( 0L );
  394.         }
  395. return( 1L );
  396. }
  397.  
  398. void CloseCtrlWindow( void )
  399. {
  400. if (Ctrl != NULL)
  401.         {
  402.         ClearMenuStrip( Ctrl);
  403.         FreeMenus( CtrlMenu);
  404.         CtrlMenu = NULL;
  405.         FreeScreenDrawInfo( Ctrl->WScreen, CtrlDrawInfo );
  406.         CtrlDrawInfo = NULL;
  407.         CloseWindow( Ctrl);
  408.         Ctrl = NULL;
  409.         FreeVisualInfo( CtrlVisualInfo);
  410.         FreeGadgets( CtrlGList);
  411.         }
  412. }
  413.  
  414. void RendWindowCtrlCfg( struct Window *Win, void *vi )
  415. {
  416. int loop;
  417. UWORD offx = Win->BorderLeft;
  418. UWORD offy = Win->BorderTop;
  419. if (Win != NULL)
  420.         {
  421.         BevelTags[3] = (ULONG)vi;
  422.         DrawBevelBoxA( Win->RPort, 2+offx,5+offy,242,29, (struct TagItem *)(&BevelTags[0]));
  423.         DrawBevelBoxA( Win->RPort,2+4+offx,5+2+offy,242-8,29-4, (struct TagItem *)(&BevelTags[2]));
  424.         DrawBevelBoxA( Win->RPort, 2+offx,41+offy,241,29, (struct TagItem *)(&BevelTags[0]));
  425.         DrawBevelBoxA( Win->RPort,2+4+offx,41+2+offy,241-8,29-4, (struct TagItem *)(&BevelTags[2]));
  426.         for( loop=0; loop<2; loop++)
  427.                 if (CtrlCfgTexts[loop].ITextFont==NULL)
  428.                         CtrlCfgTexts[loop].ITextFont=Win->WScreen->Font;
  429.         PrintIText( Win->RPort, CtrlCfgTexts, offx, offy);
  430.         }
  431. }
  432.  
  433. int OpenCtrlCfgWindow( struct Screen *Scr)
  434. {
  435. UWORD offx, offy;
  436. UWORD loop;
  437. struct NewGadget newgad;
  438. struct Gadget *Gad;
  439. struct Gadget *Gad2;
  440. APTR Cla;
  441. if (CtrlCfgFirstRun == 0)
  442.         {
  443.         CtrlCfgFirstRun = 1;
  444.         }
  445. if (CtrlCfg == NULL)
  446.         {
  447.         offx = Scr->WBorLeft;
  448.         offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  449.         if (NULL != ( CtrlCfgVisualInfo = GetVisualInfoA( Scr, NULL)))
  450.                 {
  451.                 if (NULL != ( CtrlCfgDrawInfo = GetScreenDrawInfo( Scr)))
  452.                         {
  453.                         CtrlCfgGList = NULL;
  454.                         Gad = CreateContext( &CtrlCfgGList);
  455.                         for ( loop=0 ; loop<3 ; loop++ )
  456.                                 if (CtrlCfgGadgetTypes[loop] != 198)
  457.                                         {
  458.                                         CopyMem((char * )&CtrlCfgNewGad[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
  459.                                         newgad.ng_VisualInfo = CtrlCfgVisualInfo;
  460.                                         newgad.ng_LeftEdge += offx;
  461.                                         newgad.ng_TopEdge += offy;
  462.                                         CtrlCfgGadgets[ loop ] = NULL;
  463.                                         CtrlCfgGadgets[ newgad.ng_GadgetID - CtrlCfgFirstID ] = Gad = CreateGadgetA( CtrlCfgGadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
  464.                                         }
  465.                         for ( loop=0 ; loop<3 ; loop++ )
  466.                                 if (CtrlCfgGadgetTypes[loop] == 198)
  467.                                         {
  468.                                         CtrlCfgGadgets[ loop ] = NULL;
  469.                                         Cla = NULL;
  470.                                         if (Gad)
  471.                                                 CtrlCfgGadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, CtrlCfgNewGad[ loop ].ng_GadgetText, CtrlCfgNewGad[ loop ].ng_UserData );
  472.                                         }
  473.                         if (Gad != NULL)
  474.                                 {
  475.                                 if (NULL != (CtrlCfg = OpenWindowTags( NULL, (WA_Left), 353,
  476.                                                                 (WA_Top), 26,
  477.                                                                 (WA_Width), 249+offx,
  478.                                                                 (WA_Height), 74+offy,
  479.                                                                 (WA_Title), "Configure",
  480.                                                                 (WA_MinWidth), 150,
  481.                                                                 (WA_MinHeight), 25,
  482.                                                                 (WA_MaxWidth), 1200,
  483.                                                                 (WA_MaxHeight), 1200,
  484.                                                                 (WA_DragBar), TRUE,
  485.                                                                 (WA_DepthGadget), TRUE,
  486.                                                                 (WA_CloseGadget), TRUE,
  487.                                                                 (WA_Activate), TRUE,
  488.                                                                 (WA_SmartRefresh), TRUE,
  489.                                                                 (WA_AutoAdjust), TRUE,
  490.                                                                 (WA_Gadgets), CtrlCfgGList,
  491.                                                                 (WA_PubScreen) , (LONG)Scr,
  492.                                                                 (WA_IDCMP),580,
  493.                                                                 (TAG_END))))
  494.                                         {
  495.                                         RendWindowCtrlCfg(CtrlCfg, CtrlCfgVisualInfo );
  496.                                         GT_RefreshWindow( CtrlCfg, NULL);
  497.                                         RefreshGList( CtrlCfgGList, CtrlCfg, NULL, ~0);
  498.                                         return( 0L );
  499.                                         }
  500.                                 }
  501.                         FreeGadgets( CtrlCfgGList);
  502.                         FreeScreenDrawInfo( Scr, CtrlCfgDrawInfo );
  503.                         }
  504.                 FreeVisualInfo( CtrlCfgVisualInfo );
  505.                 }
  506.         }
  507. else
  508.         {
  509.         WindowToFront(CtrlCfg);
  510.         ActivateWindow(CtrlCfg);
  511.         return( 0L );
  512.         }
  513. return( 1L );
  514. }
  515.  
  516. void CloseCtrlCfgWindow( void )
  517. {
  518. if (CtrlCfg != NULL)
  519.         {
  520.         FreeScreenDrawInfo( CtrlCfg->WScreen, CtrlCfgDrawInfo );
  521.         CtrlCfgDrawInfo = NULL;
  522.         CloseWindow( CtrlCfg);
  523.         CtrlCfg = NULL;
  524.         FreeVisualInfo( CtrlCfgVisualInfo);
  525.         FreeGadgets( CtrlCfgGList);
  526.         }
  527. }
  528.  
  529. void RendWindowLoading( struct Window *Win, void *vi )
  530. {
  531. int loop;
  532. UWORD offx = Win->BorderLeft;
  533. UWORD offy = Win->BorderTop;
  534. if (Win != NULL)
  535.         {
  536.         DrawImage( Win->RPort, &HbbsLogo_brush, 22+offx, 15+offy);
  537.         BevelTags[3] = (ULONG)vi;
  538.         DrawBevelBoxA( Win->RPort, 12+offx,54+offy,299,73, (struct TagItem *)(&BevelTags[0]));
  539.         DrawBevelBoxA( Win->RPort, 2+offx,6+offy,319,143, (struct TagItem *)(&BevelTags[0]));
  540.         DrawBevelBoxA( Win->RPort,2+4+offx,6+2+offy,319-8,143-4, (struct TagItem *)(&BevelTags[2]));
  541.         DrawBevelBoxA( Win->RPort, 137+offx,37+offy,147,10, (struct TagItem *)(&BevelTags[0]));
  542.         DrawBevelBoxA( Win->RPort,137+4+offx,37+2+offy,147-8,10-4, (struct TagItem *)(&BevelTags[2]));
  543.         DrawBevelBoxA( Win->RPort, 12+offx,129+offy,299,15, (struct TagItem *)(&BevelTags[0]));
  544.         for( loop=0; loop<12; loop++)
  545.                 if (LoadingTexts[loop].ITextFont==NULL)
  546.                         LoadingTexts[loop].ITextFont=Win->WScreen->Font;
  547.         PrintIText( Win->RPort, LoadingTexts, offx, offy);
  548.         }
  549. }
  550.  
  551. int OpenLoadingWindow( void )
  552. {
  553. struct Screen *Scr;
  554. UWORD offx, offy;
  555. if (LoadingFirstRun == 0)
  556.         {
  557.         LoadingFirstRun = 1;
  558.         }
  559. if (Loading == NULL)
  560.         {
  561.         Scr = LockPubScreen(NULL);
  562.         if (NULL != Scr)
  563.                 {
  564.                 offx = Scr->WBorLeft;
  565.                 offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  566.                 if (NULL != ( LoadingVisualInfo = GetVisualInfoA( Scr, NULL)))
  567.                         {
  568.                         if (NULL != ( LoadingDrawInfo = GetScreenDrawInfo( Scr)))
  569.                                 {
  570.                                 if (NULL != (Loading = OpenWindowTags( NULL, (WA_Left), 185,
  571.                                                                 (WA_Top), 56,
  572.                                                                 (WA_Width), 327+offx,
  573.                                                                 (WA_Height), 154+offy,
  574.                                                                 (WA_Title), "HBBS - Loading",
  575.                                                                 (WA_MinWidth), 150,
  576.                                                                 (WA_MinHeight), 25,
  577.                                                                 (WA_MaxWidth), 1200,
  578.                                                                 (WA_MaxHeight), 1200,
  579.                                                                 (WA_DragBar), TRUE,
  580.                                                                 (WA_DepthGadget), TRUE,
  581.                                                                 (WA_Activate), TRUE,
  582.                                                                 (WA_SmartRefresh), TRUE,
  583.                                                                 (WA_IDCMP),580,
  584.                                                                 (TAG_END))))
  585.                                         {
  586.                                         RendWindowLoading(Loading, LoadingVisualInfo );
  587.                                         UnlockPubScreen( NULL, Scr);
  588.                                         return( 0L );
  589.                                         }
  590.                                 FreeScreenDrawInfo( Scr, LoadingDrawInfo );
  591.                                 }
  592.                         FreeVisualInfo( LoadingVisualInfo );
  593.                         }
  594.                 UnlockPubScreen( NULL, Scr);
  595.                 }
  596.         }
  597. else
  598.         {
  599.         WindowToFront(Loading);
  600.         ActivateWindow(Loading);
  601.         return( 0L );
  602.         }
  603. return( 1L );
  604. }
  605.  
  606. void CloseLoadingWindow( void )
  607. {
  608. if (Loading != NULL)
  609.         {
  610.         FreeScreenDrawInfo( Loading->WScreen, LoadingDrawInfo );
  611.         LoadingDrawInfo = NULL;
  612.         CloseWindow( Loading);
  613.         Loading = NULL;
  614.         FreeVisualInfo( LoadingVisualInfo);
  615.         }
  616. }
  617.  
  618. struct Screen *OpenCtrlScrnScreen(void)
  619. {
  620. CtrlScrnError = 0;
  621. return OpenScreenTagList(NULL,(struct TagItem *)CtrlScrnTags);
  622. }
  623.  
  624. int OpenLibs( void )
  625. {
  626. if ( NULL != (DiskfontBase = OpenLibrary((UBYTE *)"diskfont.library" , 36)))
  627.         if ( NULL != (GadToolsBase = OpenLibrary((UBYTE *)"gadtools.library" , 37)))
  628.                 if ( NULL != (GfxBase = (struct GfxBase * )OpenLibrary((UBYTE *)"graphics.library" , 37)))
  629.                         if ( NULL != (IntuitionBase = (struct IntuitionBase * )OpenLibrary((UBYTE *)"intuition.library" , 37)))
  630.                                 return( 0L );
  631. CloseLibs();
  632. return( 1L );
  633. }
  634.  
  635. void CloseLibs( void )
  636. {
  637. if (NULL != DiskfontBase )
  638.         CloseLibrary( DiskfontBase );
  639. if (NULL != GadToolsBase )
  640.         CloseLibrary( GadToolsBase );
  641. if (NULL != GfxBase )
  642.         CloseLibrary( ( struct Library * )GfxBase );
  643. if (NULL != IntuitionBase )
  644.         CloseLibrary( ( struct Library * )IntuitionBase );
  645. }
  646.  
  647. int OpenDiskFonts( void )
  648. {
  649.         int OKSoFar = 0;
  650. if (NULL == OpenDiskFont( &HBBS8066 ) )
  651.         OKSoFar = 1;
  652. return ( OKSoFar );
  653. }
  654.  
  655. int MakeImages( void )
  656. {
  657. UWORD failed = 0;
  658. if (NULL != (WaitPointer=AllocMem( 72, MEMF_CHIP)))
  659.         CopyMem( WaitPointerData, WaitPointer, 72);
  660. else
  661.         failed = 1;
  662. if (NULL != (HbbsLogo_brush.ImageData=AllocMem( 750, MEMF_CHIP)))
  663.         CopyMem( HbbsLogo_brushData, HbbsLogo_brush.ImageData, 750);
  664. else
  665.         failed = 1;
  666. if (failed==0)
  667.         return( 0L );
  668. else
  669.         {
  670.         FreeImages();
  671.         return( 1L );
  672.         }
  673. }
  674.  
  675. void FreeImages( void )
  676. {
  677. if (WaitPointer != NULL)
  678.         FreeMem( WaitPointer, 72);
  679. WaitPointer = NULL;
  680. if (HbbsLogo_brush.ImageData != NULL)
  681.         FreeMem(HbbsLogo_brush.ImageData, 750);
  682. HbbsLogo_brush.ImageData = NULL;
  683. }
  684.  
  685.